﻿//ILatencyManager.cs
//Copyright (c) 2013 StockSharp LLC, all rights reserved.
//This code module is part of StockSharp library.
//This code is licensed under the GNU GENERAL PUBLIC LICENSE Version 3.
//See the file License.txt for the license details.
//More info on: http://stocksharp.com

namespace StockSharp.Algo.Latency
{
	using System;

	using StockSharp.BusinessEntities;

	/// <summary>
	/// Интерфейс менеджера расчета задержки регистрации заявок.
	/// </summary>
	public interface ILatencyManager
	{
		/// <summary>
		/// Обнулить расчеты.
		/// </summary>
		void Reset();

		/// <summary>
		/// Суммарное значение задержки регистрации по всем заявкам.
		/// </summary>
		TimeSpan LatencyRegistration { get; }

		/// <summary>
		/// Суммарное значение задержки отмены по всем заявкам.
		/// </summary>
		TimeSpan LatencyCancellation { get; }

		/// <summary>
		/// Обработать задержку регистрации заявки <see cref="Order.LatencyRegistration"/>.
		/// </summary>
		/// <param name="order">Заявка.</param>
		/// <returns>Задержка регистрации заявки.</returns>
		TimeSpan ProcessNewOrder(Order order);

		/// <summary>
		/// Обработать задержку отмены заявки <see cref="Order.LatencyCancellation"/>.
		/// </summary>
		/// <param name="order">Заявка.</param>
		/// <returns>Задержка отмены заявки.</returns>
		TimeSpan ProcessChangedOrder(Order order);
	}
}